const cloud = require('wx-server-sdk');
// 初始化 cloud
cloud.init({
    // API 调用都保持和云函数当前所在环境一致
    env: cloud.DYNAMIC_CURRENT_ENV
})

const db = cloud.database();
const _ = db.command;


/**
 * 这个示例将经自动鉴权过的小程序用户 openid 返回给小程序端
 * 
 * event 参数包含小程序端调用传入的 data
 * 
 */
exports.main = async(event, context) => {
    const response = {};
    const res = await cloud.callFunction({
        // 要调用的云函数名称
        name: 'getGoal'
    })
    if (res.result.body === null) {
        const { OPENID } = cloud.getWXContext();
        const data = Object.assign({}, event, { openid: OPENID, created_time: new Date, updated_time: new Date })
            // 新用户
        await db.collection('goals')
            .add({
                data: data
            })
            .then(() => {
                response.code = 200;
            })
            .catch((err) => {
                response.code = 500;
                response.body = err;
            })
        return response;
    } else {
        const id = res.result.body[0]._id;
        const data = Object.assign({}, event, { updated_time: new Date });
        Object.keys(data).forEach(key => {
            if (!data[key]) delete data[key];
        })
        try {
            await db.collection('goals')
                .doc(id)
                .update({
                    data
                })
            response.code = 200;
        } catch (err) {
            response.error = err;
            response.code = 500;
        }
    }

}